为 Let’s Encrypt 提供更多内存安全,部署 ntpd-rs
Let’s Encrypt 最近开始部署 ntpd-rs 了,用来替换原有的 ntpd 服务。锈化正式启动。 在我们分析 Let’s Encrypt 的整体安全性时,最让我们担心的是,许多操作系统和网络基础设施是用不安全的语言如 C 和 C++ 编写的。尽管我们的 CA 软件是用内存安全的 Golang 编写的,但从服务器操作系统到网络设备,缺乏内存安全性经常导致漏洞,需要不断修复。
为了提高 Let’s Encrypt 的安全性,同时也为了整个互联网的安全,我们在 2020 年启动了一个新项目,名为 Prossimo。Prossimo 的目标是将一些最关键的互联网软件基础设施变得内存安全。自项目启动以来,我们投资开发了一系列软件组件,包括 Rustls TLS 库、Hickory DNS、River 反向代理、sudo-rs、对 Linux 内核的 Rust 支持,以及 ntpd-rs。
我们已经迈出了重要的一步:成功部署了 ntpd-rs,这是 Prossimo 项目中首个被应用到 Let’s Encrypt 基础设施中的内存安全软件。
大多数操作系统依赖网络时间协议 (NTP) 来准确同步时间。时间同步是操作系统的关键任务之一,由于它需要与互联网交互,因此确保 NTP 实现的安全性非常重要。
在 2022 年 4 月,Prossimo 开始开发一个名为 ntpd-rs 的内存安全且更加安全的 NTP 实现。经过一段时间的完善,这个实现现在由 Project Pendulum 维护。到 2024 年 4 月,ntpd-rs 已经在 Let’s Encrypt 的测试环境中部署,并且现在正式投入使用。
在接下来的几年中,我们计划继续在 Let’s Encrypt 基础设施中,用内存安全的替代品替换现有的 C 或 C++ 软件:用 Rustls 替换 OpenSSL 及其衍生产品,用 Hickory 替换我们的 DNS 软件,用 River 替换 Nginx,以及用 sudo-rs 替换 sudo。内存安全虽然只是整体安全的一部分,但却是非常重要的一环,我们很高兴能够不断改进。